package com.atguigu.bigdata.spark

import org.apache.spark.{SparkConf, SparkContext}


object Spark01_RDD {

  def main(args: Array[String]): Unit = {
    //创建SparkConf
    //s设定spark计算框架的运行环境
    val config: SparkConf = new SparkConf().setMaster("local[*]").setAppName("wordCount")
    //创建Spark上下文环境
    val sc = new SparkContext(config)
//    创建RDD
//    1.从内存中创建 makeRDD(List(1,2,3,4),2)指定分区分区为两个
//    默认的分区是根据cpu内核数来的。
     val listRDD = sc.makeRDD(List(1,2,3,4),2)
//    2.从内存中创建 parallelize
     val arrayRDD = sc.parallelize(Array(1,2,3,4))
//    两者底层实现完全相同所以使用哪一个都可以。
     arrayRDD.collect().foreach(println)
     listRDD.collect().foreach(println)
//    3.从外部存储中创建
//    默认情况下，可以读取项目路径，也可以读取hdfs中的路径
//     sc.textFile("in",3)3是最小的分区所以可能有多于三个的分区,这个分区数取决于hadoop读取文件时的分片规则
    val fileRDD = sc.textFile("in",3)
    fileRDD.collect().foreach(println)
    fileRDD.saveAsTextFile("output")

  }
}
